<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>
<script>
    // Map和数组的相互转换


    // 数组(二维数组)转Map
    // 1. 手动转换 => 遍历二维数组=> 分别取出二维组中的键和值 => 放到Map数据结构中
    // 2. 自动转换 => new Map() 可以接收二维数组 => 转化为对应的Map数据结构

    var arr = [1, 2, 3];
    var o = { a: 1, b: 2 };

    // 将键值对存在二维数组中
    var list = [["hello", "world"], [100, 200], [true, false], [null, undefined], [arr, arr], [o, o]];

    // 1. 手动转换 => 遍历二维数组=> 分别取出二维组中的键和值 => 放到Map数据结构中
    // var m = new Map();
    // list.forEach((item) => {
    //     var [key, val] = item;
    //     m.set(key, val);
    // })
    // console.log(m);

    // 2. 自动转换 => new Map() 可以接收二维数组 => 转化为对应的Map数据结构
    var m = new Map(list);
    console.log(m);



    // Map结构转数组
    // 1. 手动转换 => 遍历Map结构 => 将键名键值取出,放到数组中(二维数组)

    // var list = [];
    // m.forEach((val, key) => {
    //     var arr = [key, val]; // 将每个键值对整合到一个数组中
    //     list.push(arr);
    // })
    // console.log(list);


    // 2. 自定转换  => 快捷将Map结构转化为二维数组
    // a. Array.from()  可以Map数据结构 => 返回二维数组
    // b. ...           可以展开Map数据结构 => 返回二维数组

    var list = Array.from(m);
    console.log(list);

    var list = [...m];
    console.log(list);










</script>

</html>